#pragma once
#include "DXUT.h"
#include "d3dx11effect.h"
#include "SDKmesh.h"
#include <string>

class Shader
{
public:
	Shader(void);
	virtual ~Shader(void);

	virtual bool Initialize(ID3D11Device* pd3dDevice) = 0;
	virtual void Render(ID3D11DeviceContext*, UINT);
	virtual void Render(ID3D11DeviceContext*, CDXUTSDKMesh&);
	virtual void Release();

	ID3DX11Effect* GetEffect();
	ID3DX11EffectTechnique* GetTechnique();
	ID3D11InputLayout* GetVertexLayout();

protected:
	ID3DX11Effect* m_Effect;
	ID3DX11EffectTechnique*  m_Technique;
	ID3D11InputLayout* m_VertexLayout;
};

